﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SoftHotel.Models;
using System.Data;
using System.Data.Entity;
using PagedList;


namespace SoftHotel.Controllers
{
    public class ServicioController : Controller
    {

        static List<Servicio> busquedaser = new List<Servicio>();
        ServicioDAO ms = new ServicioDAO();
        private SedeDAO sedeDao = new SedeDAO();
        private ProductoDAO productoDAO = new ProductoDAO();
        private ParametroDAO parametroDAO = new ParametroDAO();

        public ActionResult Index()
        {
            return View();
        }


        [HttpPost]
        public ActionResult Index(Servicio servicio, string button) //recibe la acción del botón de la pagina de inicio
        {
            if (button == "Buscar")
                return RedirectToAction("Buscar", servicio); //Model de Buscar es IEnumerable (*)
            return RedirectToAction(button, "Servicio");
        }

        public ActionResult Buscar(Servicio servicio)
        {
            List<Servicio> servicios = new List<Servicio>();
            servicios = ms.Buscar(servicio);
            return View(servicios);
        }

        [HttpPost]
        public ActionResult Buscar(string button, Servicio servicio)
        {
            try
            {
                if (button == "Editar")
                {
                    return RedirectToAction("Editar", "Servicio");
                }

                if (button == "Regresar")
                {
                    return RedirectToAction("Index", "Servicio");

                }
                return View("Index");
            }
            catch
            {
                return View(servicio);
            }
        }


        public ActionResult Agregar()
        {
            Servicio servicio = new Servicio();
            ViewBag.estado = new SelectList(parametroDAO.parametros.Where(g=> g.tipo=="ESTADO_SERVICIO"), "valorNum", "valor");
            ViewBag.idSede = new SelectList(sedeDao.sedes, "idSede", "nombre");
            ViewBag.idProducto = new SelectList(productoDAO.prods, "idProducto", "descripcion");
            return View(servicio);
        }

        //
        // POST: /ReservaHab/Create

        [HttpPost]
        public ActionResult Agregar(Servicio servicio, string button)
        {
            try
            {
                if (button == "Guardar")
                {
                    ms.Agregar(servicio);
                    ms.SaveChanges();
                }
                return View("Index");
            }
            catch
            {
                return View(servicio);
            }
        }


        public ActionResult Detalle(Servicio servicio)
        {
            var ser = ms.datos.Where(g => g.idServicio == servicio.idServicio);
            ViewBag.idServicio = servicio.idServicio;
            foreach (DatoServicio d in ser)
            {
                d.nombreServicio = ms.Buscar(d.idServicio).nombre;
            }
            return View(ser.ToList());
        }


        [HttpGet]
        public ActionResult Editar(int id)
        {
            Servicio servicio = new Servicio();
            ViewBag.listSedes = new SelectList(sedeDao.sedes, "idSede", "nombre");
            servicio = ms.Buscar(id);
            return View(servicio);
        }


        //POST: /ReservaHab/Edit/5

        [HttpPost]
        public ActionResult Editar(int id, Servicio servicio)
        {
            try
            {
                ms.Editar(servicio);
                return RedirectToAction("Index");
            }
            catch
            {
                return View(servicio);
            }
        }


        public ActionResult Eliminar(int id)
        {
            Servicio servicio = ms.Buscar(id);
            return View(servicio);
        }

        //
        // POST: /Servicio/Delete/5

        [HttpPost]
        public ActionResult Eliminar(int id, Servicio servicio)
        {
            try
            {
                servicio = ms.Buscar(id);
                 ms.Anular(servicio);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

       
    }
}
